#pragma once

#include <list>

class IBaseToken;

class CObjectManager
{
	static CObjectManager* s_Instance;
	std::list< IBaseToken* > m_Objects;

	CObjectManager(void);
	~CObjectManager(void);
	CObjectManager( const CObjectManager& );
	CObjectManager& operator=( const CObjectManager& );

public:

	// Singleton
	static CObjectManager* GetInstance( void );
	static void DeleteInstance( void );

	void AddObject( IBaseToken* pToken );
	void RemoveObject( IBaseToken* pToken );
	void RemoveAllObjects( void );
	void UpdateAllObjects( float fElapsedTime );
	void RenderAllObjects( void );
	void CheckCollisions( void );

};

